/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package probando;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Vector;

/**
 *
 * @author Administrador
 */
public class hiloservidor extends Thread {
    Socket scli=null;
     Socket scli2=null;
     DataInputStream entrada=null;
     DataOutputStream salida=null;
     DataOutputStream salida2=null;
     public static Vector<hiloservidor> clientesActivos=new Vector();
     String nameUser;
     servidor serv;


     public hiloservidor(Socket scliente,Socket scliente2,servidor serv)
     {
        scli=scliente;
        //scli2=scliente2;
        this.serv=serv;
        nameUser="";
        clientesActivos.add(this);
         System.out.println("cliente agregado: "+this);
     }

     public hiloservidor(Socket scliente){
         clientesActivos.add(this);
         System.out.println("cliente agregado: ");

     }

      public String getNameUser()
     {
       return nameUser;
     }

     public void setNameUser(String name)
     {
       nameUser=name;
     }


    public void run() 
     {

            System.out.println(".::Esperando Mensajes :");

    	try
    	{
          entrada=new DataInputStream(scli.getInputStream());
          salida=new DataOutputStream(scli.getOutputStream());
          salida2=new DataOutputStream(scli2.getOutputStream());
          this.setNameUser(entrada.readUTF());
          //enviaUserActivos();

    	}
    	catch (IOException e) {  e.printStackTrace();     }

        int opcion=0,numUsers=0;
        String amigo="",mencli="";

    	while(true)
    	{
          try
          {
             opcion=entrada.readInt();
             switch(opcion)
             {
                case 1://envio de mensage a todos
                   mencli=entrada.readUTF();
                    System.out.println("mensaje recibido "+mencli);
                   //enviaMsg(mencli);
                   break;
                case 2://envio de lista de activos
                   numUsers=clientesActivos.size();
                   salida.writeInt(numUsers);
                   for(int i=0;i<numUsers;i++)
                      salida.writeUTF(clientesActivos.get(i).nameUser);
                   break;
                case 3: // envia mensaje a uno solo
                   amigo=entrada.readUTF();//captura nombre de cliente
                   mencli=entrada.readUTF();//mensage enviado
                   //enviaMsg(amigo,mencli);
                   break;
             }
          }
          catch (IOException e) {System.out.println("El cliente termino la conexion");break;}
    	}
    	    System.out.println("Se removio un usuario");
    	clientesActivos.removeElement(this);
    	try
    	{
            System.out.println("Se desconecto un usuario");
          scli.close();
    	}
        catch(Exception et)
        {
            System.out.println("no se puede cerrar el socket");}
     }



}
